約 5,357,788 件
https://w.atwiki.jp/channel/
祝 ブログスタート どうも 大好物を差し入れでもらって めっちゃいい気分です(^^♪ 気分が乗った時に自分の好きな事を書いていこうと思います 感想などもお待ちしていますね
https://w.atwiki.jp/bambooflow/pages/75.html
SystemC用語 OSCI(Open SystemC Initiative) SystemCの標準化を行っている組織。 TLM(Transaction Level Moeling) トランザクション・レベル・モデリング。 データの流れを主体としたシステムレベル。このレベルではハードウェアの詳細な設計までは行わない。 TLMはSystemCで主に使われる。 TLMはRTLに比べて抽象度が高く、シミュレーションも高速に実行できる利点がある。 動作合成(Behavioral Synthesis,ビヘイビア合成) SystemC(C++)記述からRTLを生成する。 専用のツールを必要とする。
https://w.atwiki.jp/bambooflow/pages/134.html
SystemC HelloWorld - 始めの一歩 SystemCライブラリのインストールが完了したら、とりあえず実行できるか確認してみる。 「Hello, SystemC!!!」を表示するプログラム。 ここでは、Linuxインストールで/user/local/systemc-2.2/にインストールしたとする。 SystemC HelloWorld - 始めの一歩プログラム内容 サンプル コンパイル/実行 まとめ プログラム内容 main.cpp #include systemc.h int sc_main( int argc, char* argv[] ) { cout "Hello, SystemC!!!" endl; return 0; } "systemc.h"のインクルードする メインは"sc_main"を使用する sc_mainはSystemCのメイン関数となっている。実際のc++のメイン関数であるmainはライブラリ内に存在する。main関数はsc_main.cppに存在する。ここで、sc_elab_and_simが呼ばれて、その中で、sc_mainが実行される。実行したときに最初にSystemCのバージョン等が表示される。これはsc_elab_and_sim内でplnにより表示されている。 SystemCのバージョンv2.2では、インクルードで".h"を抜いた書き方ができる。 その場合は以下のようになる。 #include systemc using namespace sc_core; using namespace sc_dt; using namespace std; サンプル hello.tgz main.cpp Makefile コンパイル/実行 $ make g++ -Wall -I. -I/usr/local/systemc-2.2/include -c main.cpp g++ -Wall -I. -I/usr/local/systemc-2.2/include -L. -L/usr/local/systemc-2.2/lib-linux -o run.x main.o -lsystemc -lm $ ./run.x 結果表示 SystemC 2.2.0 --- Jun 28 2008 10 19 12 Copyright (c) 1996-2006 by all Contributors ALL RIGHTS RESERVED Hello, SystemC!!! まとめ ここでは、SystemCのインストールがうまくいったかどうかとコンパイルが正しくできるかを確認した。 SystemCを理解するためには次を覚える。 モジュール定義方法 信号の定義と接続方法 プロセス(並列処理)の定義方法 スレッド間の同期について システム時間とシミュレーション時間について シミュレーションの開始と終了
https://w.atwiki.jp/bambooflow/pages/142.html
SystemCのモジュール定義について(SC_MODULE) SystemCのモジュール定義について(SC_MODULE)モジュール構文SC_MODULEマクロを使わないモジュールの構文 モジュールの構成部品モジュール SC_MODULE SC_MODULEクラスのコンストラクタ SC_CTOR 実行の単位 プロセス(SC_METHOD, SC_THREAD, SC_CTHREAD) モジュール複製の回避 マクロ定義SC_MODULEのマクロ定義 SC_CTORのマクロ定義 SC_HAS_PROCESSのマクロ定義 モジュール構文 SystemCの基本的なモジュール定義はつぎのようになる。 C++があまりよくわからない人は、とりあえずこういうものなんだ、と思っておけばよいかと。 #include systemc.h SC_MODULE( ModuleName ) { // ポート宣言(sc_port, sc_in, sc_out等) // メンバ・チャネル(sc_signal, sc_buffer等) // メンバ・データ(int, char, unsigned long等) // プロセス・メソッド(プロセス) // ヘルパ・メソッド // コンストラクタ SC_CTOR( ModuleName ) // 初期化 { // サブモジュールのインスタンス // サブもジュールの信号接続 // プロセス登録 // 静的センシティビティ設定 // ユーザ定義の各種設定 } // デストラクタ ~ModuleName() { } }; SC_MODULEマクロを使わないモジュールの構文 C++をわかっている人にとってはこちらの書き方の方がわかりやすいかもしれない。 #include systemc.h class ModuleName public sc_module { public SC_HAS_PROCESS( ModuleName ); // コンストラクタ ModuleName( sc_module_name m_name ) sc_module( m_name ) { } }; SC_HAS_PROCESSはモジュール(のコンストラクタ)内でプロセス登録をしている場合は必ず必要になる。コンストラクタをSC_CTORマクロで記述している場合は、このSC_HAS_PROCESSの記述は必要ない。 もし、プロセス登録がないモジュールでもSC_HAS_PROCESSが宣言されていたからといってエラーになることはないので、とりあえず書いておくことをお薦めする。 SC_HAS_PROCESSは単なるtypedefのマクロにすぎない。 モジュールの構成部品 モジュール SC_MODULE SystemCでハードウェアの1つの機能を記述するためのデザインの最小単位はSC_MODULEである。 Verilog-HDLでいうところのmoduleにあたる。 とにもかくにもこのSC_MODULEを作らなければ始まらない。 SC_MODULEはマクロで、C++のクラスを宣言することになる。 SC_MODULEでは以下の要素を構築する。 ポート(sc_port, sc_in, sc_out等) メンバ・チャネル(sc_signal, sc_buffer等) メンバ・データ(int, char, unsigned long等) コンストラクタ(SC_CTOR) デストラクタ プロセス・メソッド(プロセス) ヘルパ・メソッド SC_MODULEクラスのコンストラクタ SC_CTOR SC_MODULEのコンストラクタはSC_CTORというマクロが用意されている。 SC_MODULEのコンストラクタではSystemC特有の以下の処理を行う。 サブデザインの初期化/アロケーション サブデザインの接続(bind) SystemCカーネルへのプロセス登録(SC_METHOD, SC_THREAD, SC_CTHREAD) 静的センシティビティの設定(sensitive, reset_signal_is等) ユーザ定義の各種設定 実行の単位 プロセス(SC_METHOD, SC_THREAD, SC_CTHREAD) ハードウェアを表現するためにSystemCでは並列処理を表現することができる。 並列処理は関数が単位となる。 SystemCでは、並列処理に設定した関数のことをプロセスと呼ぶ。 プロセスの登録はSC_MODULEのコンストラクタで行う必要がある。それ以外では行わない。 SC_THREADのプロセス登録の例は次のとおり。 SC_MODULE( Model ){ ・・・ void func_thread(); // constructor SC_CTOR( Model ) { SC_THREAD( func_thread ); } }; モジュール複製の回避 モジュール複製は望ましくない。 たいていは暗黙のルールでモジュールのコピーはしないもの。 コピーコンストラクタと代入演算子関数をprivateで定義することでモジュールのコピーを許さないようにできる。 次にその記述を示す。 SC_MODULE( MyModel ) { SC_CTOR( MyModel ) { } private MyModel( const MyModel ) {} // コピーコンストラクタの禁止 MyModel operator=( const MyModel ) { return *this; } // 代入演算の禁止 }; こうすることで、万一モジュールの複製をしようとしても、コンパイル時にエラーとして怒られる。 マクロ定義 SC_MODULEのマクロ定義 SC_MODULEはsc_module.hで以下のように宣言されている。 #define SC_MODULE(user_module_name) \ struct user_module_name sc_core sc_module SC_CTORのマクロ定義 SC_MODULEのコンストラクタであるSC_CTORはsc_module.hで次のように定義されている。 #define SC_CTOR(user_module_name) \ typedef user_module_name SC_CURRENT_USER_MODULE; \ user_module_name( sc_core sc_module_name ) SC_HAS_PROCESSのマクロ定義 SC_HAS_PROCESSはsc_module.hで次のように定義されている。 #define SC_HAS_PROCESS(user_module_name) \ typedef user_module_name SC_CURRENT_USER_MODULE
https://w.atwiki.jp/bambooflow/pages/115.html
SystemC波形出力 SystemC波形出力VCD波形ファイル出力 WIF波形出力 波形表示ツール波形表示ツール(GTKWave) for Linux,Cygwin 波形表示ツール(Wave VCD) for Windows 波形表示ツール(CvSDL) for Windows 波形出力の設定は、sc_mainとか、検証環境用のファイル内に記述する。 簡単なのはsc_main内に記述する方法。 TLMベースでは波形はほとんど見ないと思う。BCAのバス設計時は見ると思う。 sc_trace sc_trace_filevcd_trace_file wif_trace_file VCD波形ファイル出力 sc_main記述例 #include systemc.h #include "TOP.h" int sc_main(int argc, char* argv[]) { sc_clock CLK( "CLK", 10, SC_NS ); TOP *top = new TOP("TOP"); // モジュール実体化 #ifdef SYSC_DUMP_VCD_FILE sc_trace_file *trace_f; trace_f = sc_create_vcd_trace_file( "systemc" ); // 出力ファイル名を指定する(systemc.vcd) //((vcd_trace_file*)trace_f)- sc_set_vcd_time_unit(-9); // ns(ナノ秒)単位 trace_f- set_time_unit( 1.0, SC_NS ); // timescale 1ns(ナノ秒)単位 (v2.2.0) sc_trace( trace_f, CLK, "CLK" ); //CLKを波形ファイル出力として指定 sc_trace( trace_f, TOP- in_data, "TOP.in_data" ); //下位階層の信号を指定 // sc_trace ・・・ #endif // SYSC_DUMP_VCD_FILE sc_start(); // シミュレーション開始 #ifdef SYSC_DUMP_VCD_FILE sc_close_vcd_trace_file( trace_f ); #endif // SYSC_DUMP_VCD_FILE return 0; } TOPモジュールの実体化(すべてのモデル実体化)のあとに設定する。 sc_start()実行よりも前に設定する。 波形出力できるのは、sc_in , sc_out , sc_signal で普通の変数は表示できない。 シミュレーション実行が終了すると、波形ファイル"systemc.vcd"が出力される。 波形出力の有無の切り替えを#ifdef ~#endifでできるようにすると検証しやすくなる。 Makefileのコンパイルオプションで"-DSYSC_DUMP_VCD_FILE"をつけると波形ファイルが出力される。 WIF波形出力 この波形ファイル形式はよく知らない。 とりあえずVCDと同じように設定すればよい。 以下の点が異なる。単純に"vcd"だったのを"wif"とすればよい。 sc_trace_file *trace_f; trace_f = sc_create_wif_trace_file( "systemc" ); // 出力フェイル名を指定する //((wif_trace_file*)trace_f)- sc_set_vcd_time_unit(-9); // ns(ナノ秒)単位 trace_f- set_time_unit( 1.0, SC_NS ); // 1ns(ナノ秒)単位 (v2.2.0) ・・・ sc_close_wif_trace_file(tf);
https://w.atwiki.jp/bambooflow/pages/140.html
SystemC 動的プロセスについて メソッドを動的にSC_METHODやSC_THREAD指定することが可能。 普通のモデリング時には必要ないが、応用的なことに使用することがある。 たとえば、デバッグ機能を追加したい、とか、検証機能を強化したい、とか。 以下にその方法をメモる。 SystemC 動的プロセスについて動的プロセスを扱うための準備 使用する関数 動的methodを指定する記述例 動的threadを指定する記述例 動的プロセスを扱うための準備 以下のようにsytemc.hをインクルードする前にSC_INCLUDE_DYNAMIC_PROCESSESを定義する必要がある。 #define SC_INCLUDE_DYNAMIC_PROCESSES #include systemc.h もしくは、コンパイルオプションの "-D"を使用する方法もある。 g++ -I/usr/local/systemc-2.2 -DSC_INCLUDE_DYNAMIC_PROCESSES -c model.cpp 使用する関数 sc_spawn プロセスを指定するときに使用する。 sc_bind プロセスとする関数を指定するときに使用する。 sc_bindはboost bindのdefine定義。 sc_spawn_options プロセスのオプション設定をする。たとえば、センシティブ指定とか。 戻り値なしで登録する場合 sc_process_handle hname = sc_spawn( /*void*/sc_bind( funcName, ARGS... ), char* processName, sc_spawn_options spawnOptopns ); sc_process_handle hname = sc_spawn( /*void*/sc_bind( funcName, object, ARGS... ), char* processName, sc_spawn_options spawnOptopns ); 戻り値ありで登録する場合 sc_process_handle hname = sc_spawn( returnVar, sc_bind( funcName, ARGS... ), char* processName, sc_spawn_options spawnOptopns ); sc_process_handle hname = sc_spawn( returnVar, sc_bind( funcName, object, ARGS... ), char* processName, sc_spawn_options spawnOptopns ); 動的methodを指定する記述例 #define SC_INCLUDE_DYNAMIC_PROCESSES #include systemc.h SC_MODULE( DUT ) { sc_in sc_uint 8 din1; sc_in sc_uint 8 din2; sc_out sc_uint 9 dout; SC_CTOR( DUT ) { SC_THREAD( init_thread ); } void init_thread() { sc_spawn_options mth; mth.spawn_method(); mth.dont_initialize(); mth.set_sensitivity( din1 ); mth.set_sensitivity( din2 ); sc_spawn( sc_bind( DUT spawn_method0,this), "method0", mth ); } void spawn_method0() { dout.write( din1.read() + din2.read() ); } }; 注意として、sc_spawnの指定は、プロセス内に記述する。 コンストラクタに記述すると実行時エラーとなる。 動的threadを指定する記述例 #define SC_INCLUDE_DYNAMIC_PROCESSES #include systemc.h SC_MODULE( DUT ) { sc_in bool clk; SC_CTOR( DUT ) { SC_THREAD( run ); } void run() { sc_spawn_options opt; opt.set_sensitivity( clk.pos() ); sc_spawn( sc_bind( DUT spawn_thread,this, false ), "thread0", opt ); } void spawn_thread( bool flag ) { while (true) { ・・・ wait(); } } }; 動的プロセスでは引数を渡したり戻り値を受け取ったりするができる。 例では、bool型の引数を渡している。
https://w.atwiki.jp/yumemi_anex/pages/61.html
/ちゃ ノオ/ [名] チャンネル ゅめみ「徹子、わらわは、すっかりテレビ離れしてしまってのう。何年もケーブルテレビは契約しておるが、見るチャンネルは4つくらいしかない」 徹子「four...」 ゅめみ「テレビのチャンネルは、英語でもチャネルぢゃ。日本人にはチャノーときこえるであろう。」 徹子「channel...」 ゅめみ「ケーブルテレビのチャネルは、無料のものだけでも50か60はあろう(よく知らぬが)。ほとんどのチャネルは自前の番組を制作しておらぬ。番組を買ってきては、再放送、再放送の連続ぢゃ。これがCATVの正体ぢゃ。」 徹子「cable...」 ゅめみ「入れ物だけ作って、中身はほったらかしのハコモノ事業が、放送業界でも行われておるのぢゃ。嘆かわしいことぢゃ。チャネルが多ければ、よいというものではないのう。」 徹子「channels...」 ゅめみ「チャネルの複数形は、人と話し合うための、パイプや窓口のような意味で使われる。これからは、テレビのような一方通行のチャネルだけでなく、両方からコンタクトできるチャネルがふえていくとよいのう。テレビの時代は終わりぢゃわ。」 ※ 業界と官僚主導で、勝手におしすすめられている「地テジ化」。1800億の公的資金導入についても、もらう側のテレビ局も新聞も(TVと新聞は身内会社ぢゃ)、もちろん批判はせぬ。しかも、自分らは高給を取って、番組製作は年収200万という底辺レベルの労働者にまる投げ。こんな社会の寄生虫はいらぬ。とっととつぶれてしまえ、馬鹿者めらが チャンネル a TV channel(テレビのチャンネル) Channel 1(1チャンネル) the National Channel(国営チャンネル) Disney Channel(ディズニー・チャンネル) □[~が] The channel airs dramas. (そのチャンネルは、ドラマを放映しています) The Biography Channel is running an excellent series. (バイオグラフィー・チャンネルは、優れた連続番組を放送しているところです) What channel broadcasts Formula 1 races live? (どのチャンネルがF1レースを生で放映しますか?) □[~を] change TV channel to 8 (テレビのチャンネルを8に変える) skip a channel (チャンネルをとばす) have three hundred channels (300のチャンネルをもっている) □[~で] This video clip was broadcasted on Channel 4. (このビデオクリップは4チャンネルで放映されました) [複数形で] (情報などが流れる)通路 diplomatic channels(外交チャンネル、外交ルート) channels of communication(意思疎通のためのパイプ) □[~で] Details will be settled through diplomatic channels. (詳細は外交ルートを通して、決着するでしょう)
https://w.atwiki.jp/bambooflow/pages/121.html
SystemCの抽象度(抽象レベル) SystemCの抽象度(抽象レベル)TLM標準化団体ごとの抽象レベル定義OSCIが提唱する抽象レベル OCP-IPが提唱する抽象レベル GreenSocsが提唱する抽象レベル STARCが提唱する抽象レベル その他の抽象レベル TLM標準化団体ごとの抽象レベル定義 OSCIが提唱する抽象レベル PV(Programmers View) PVT(Programmers View with Timing) CC(Cycle Callable) OCP-IPが提唱する抽象レベル OCP/TL3(OCP Transaction Level 3) OCP/TL2(OCP Transaction Level 2) OCP/TL1(OCP Transaction Level 1) OCP/TL0(OCP Transaction Level 0) GreenSocsが提唱する抽象レベル PV(Programmers View) PVT(Programmers View with Timing) CC(Cycle Callable) RTL(Register Transfer Level) STARCが提唱する抽象レベル UTTR(Un-timed Transaction) ATTR(Approximately-timed Transaction) ATBP(Approxymately-timed Bus-Phase) CABC(Cycle-accurate Bus-Cycle) CABS(Cycle-accurate Bus-Signal) データの粒度とタイミング精度から抽象レベルを分類する。 その他の抽象レベル UTF(Untimed Functional)モデル TF(Timed Functional)モデル BCA(Bus Cycle Accurate)モデル CA(Cycle Accurate)モデル
https://w.atwiki.jp/bambooflow/pages/136.html
SystemC 並列処理動作について ここでは、SystemCの機能のひとつである並列処理動作について説明する。 2つのプロセスを作り、並列動作を体感してみる。 SystemC 並列処理動作についてサンプル プログラム 実行結果 説明 サンプル multi_process.tgz main.cpp Makefile プログラム main.cpp #include systemc.h SC_MODULE( MyModel ) { // constructor SC_CTOR( MyModel ) { SC_THREAD( thread0 ); SC_THREAD( thread1 ); } // process0 void thread0() { while (true) { cout "----thread0----------" endl; wait( 10.0, SC_US ); } } // process1 void thread1() { while (true) { cout "-----------thread1---" endl; wait( 10.0, SC_US ); } } }; int sc_main( int argc, char* argv[] ) { MyModel *myModel; // module instance myModel = new MyModel( "MyModel" ); sc_assert( myModel ); ///////////////////////////////////////////////////////////////////////// // initialize sc_start( SC_ZERO_TIME ); cout "now time is " sc_time_stamp() endl; // simulation sc_start( 10.0, SC_US ); cout "now time is " sc_time_stamp() endl; sc_start( 10.0, SC_US ); cout "now time is " sc_time_stamp() endl; sc_start( 100.0, SC_US ); cout "now time is " sc_time_stamp() endl; sc_start( 50.0, SC_US ); cout "now time is " sc_time_stamp() endl; ///////////////////////////////////////////////////////////////////////// delete myModel; return 0; } 実行結果 SystemC 2.2.0 --- Jul 1 2008 00 09 35 Copyright (c) 1996-2006 by all Contributors ALL RIGHTS RESERVED ----thread0---------- -----------thread1--- now time is 0 s now time is 10 us ----thread0---------- -----------thread1--- now time is 20 us -----------thread1--- ----thread0---------- -----------thread1--- ・・・ ----thread0---------- -----------thread1--- ----thread0---------- now time is 120 us ----thread0---------- -----------thread1--- ----thread0---------- ・・・ -----------thread1--- ----thread0---------- -----------thread1--- now time is 170 us 説明 このプログラムではMyModelというSC_MODULEを1つ定義してsc_main()でインスタンスしている。 このMyModelは2つのプロセスをもつ。プロセス名は、thread0とthread1。 この2つのプロセスは、シミュレーション開始(sc_start)とともに実行される。 ここで、注目してほしいことは、thread0とthread1はどちらもwhile(true){}の無限ループを構成していること。 SC_THREADの処理はwaitによりいったん停止することができる。 wait( 10.0, SC_US ); この記述は、ここで処理を一端停止し、シミュレーション時間が10us進んだらこのwaitを抜けて続きの処理をするものである。第1引数はdouble型、第2引数は時間の単位を指定する。 時間の単位はSC_SEC(秒)からSC_FS(フェムト秒)まで指定できる。 今回は、SC_US(マイクロ秒)を単位として指定した。 thread0とthread1のwaitの時間はともに10usなのでどちらの処理が先に実行されるかはわからない。 どちらが先に処理されるかの順番はSystemCでは保証されない。 実行結果をみるとsc_start()を実行するたびにthread0とthread1の実行の順番が入れ替わっていることに注目してほしい。 プロセスは、posixもしくはpthreadというCライブラリのスレッド・モデルを利用して実現しているようだ。
https://w.atwiki.jp/gtavi_gta6/pages/2136.html
Channel X imageプラグインエラー ご指定のURLまたはファイルはサポートしていません。png, jpg, gif などの画像URLまたはファイルを指定してください。 Channel X 概要説明 プレイリスト 場所 余談 概要 ジャンル:パンク・ロック 、ハードコア・パンク 所在地:ベスプッチ 周波数:99.1 FM 楽曲数:18曲(12+6) DJ:Keith Morris 説明 最初から収録されているラジオ局。ストーリーモードとGTAオンラインの両方で選局できる。 真のパンク。真の西海岸。―GTAV公式サイト プレイリスト アーティスト名 曲名 発売年 Agent Orange Bored of You 1980 Black Flag My War 1984 Circle Jerks Rock House 1985 Fear The Mouth Don't Stop (The Trouble with Women Is) 1985 Off! What's Next 2013 Suicidal Tendencies Subliminal 1983 The Adolescents Amoeba 1981 The Descendents Pervert 1985 The Germs Lexicon Devil 1978 The Weirdos Life of Crime 1985 T.S.O.L. Abolish Government/Silent Majority 1981 Youth Brigade Blown Away 1983 PlayStation®4、Xbox One、PC版限定 アーティスト名 曲名 発売年 D.O.A. The Enemy 1980 D.R.I. I Don’t Need Society 1985 MDC John Wayne Was A Nazi 1980 Redd Kross Linda Blair 1982 The Zeros Don’t Push me Around 1980 X Los Angeles 1980 場所 ラジオ局 以下の場所で聞くことができる。 テキーララ アミュネーション(チュマシュ/リトル・ソウル/ピルボックス・ヒル/サイプレス・フラット/タタヴィアム山地)] タトゥー・パーラー クラブハウス (ジュークボックスを使用しパンクを選択) 個々の楽曲 収録されているいくつかの曲は以下のミッションで自動的に再生される。結晶の迷宮開始時に乗り物に乗車するとLos Santos Rock Radioに収録されているThe Doobie Brothersの曲「What a Fool Believes」が自動的に再生されるが、しばらくするとトレバーがChannel Xに切り替え、T.S.O.L.の曲「Abolish Government/Silent Majority」が自動的に再生される。 Black Flagの曲「My War」はプランCの中盤にトレバーが警察の追跡を振り切ると自動的に再生される。 余談 トレバー の1番のお気に入りのラジオ局でロストMCのメンバーのお気に入りでもある。 上へ